@bangladeshi/bangladesh-address
Version:
A simple npm package for Bangladesh's administrative divisions, districts, upazilas, and metropolitan thanas.
130 lines (129 loc) • 7.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const district_1 = require("../district");
const division_name_1 = require("../division/types/division-name");
describe("District functions", () => {
describe("districtsOf", () => {
it("should return districts for Dhaka division", () => {
const districts = (0, district_1.districtsOf)(division_name_1.DivisionName.Dhaka);
expect(districts.length).toBeGreaterThan(0);
expect(districts).toContain("Dhaka");
expect(districts).toContain("Gazipur");
});
it("should return districts for Chattogram division", () => {
const districts = (0, district_1.districtsOf)(division_name_1.DivisionName.Chattogram);
expect(districts.length).toBeGreaterThan(0);
expect(districts).toContain("Chattogram");
expect(districts).toContain("Cox's Bazar");
});
it("should return an array of strings", () => {
const districts = (0, district_1.districtsOf)(division_name_1.DivisionName.Rajshahi);
districts.forEach((district) => {
expect(typeof district).toBe("string");
});
});
it("should return unique district names", () => {
const districts = (0, district_1.districtsOf)(division_name_1.DivisionName.Khulna);
const uniqueDistricts = [...new Set(districts)];
expect(districts.length).toBe(uniqueDistricts.length);
});
});
describe("allDistricts", () => {
it("should return all 64 districts of Bangladesh", () => {
const districts = (0, district_1.allDistricts)();
expect(districts).toHaveLength(64);
});
it("should return an array of strings", () => {
const districts = (0, district_1.allDistricts)();
districts.forEach((district) => {
expect(typeof district).toBe("string");
});
});
it("should contain major districts", () => {
const districts = (0, district_1.allDistricts)();
expect(districts).toContain("Dhaka");
expect(districts).toContain("Chattogram");
expect(districts).toContain("Sylhet");
expect(districts).toContain("Rajshahi");
});
it("should return unique district names", () => {
const districts = (0, district_1.allDistricts)();
const uniqueDistricts = [...new Set(districts)];
expect(districts.length).toBe(uniqueDistricts.length);
});
});
describe("isValidDistrict", () => {
it("should return true for valid districts", () => {
expect((0, district_1.isValidDistrict)("Dhaka")).toBe(true);
expect((0, district_1.isValidDistrict)("Chattogram")).toBe(true);
expect((0, district_1.isValidDistrict)("Sylhet")).toBe(true);
expect((0, district_1.isValidDistrict)("Tangail")).toBe(true);
expect((0, district_1.isValidDistrict)("Cox's Bazar")).toBe(true);
});
it("should return false for invalid districts", () => {
expect((0, district_1.isValidDistrict)("InvalidDistrict")).toBe(false);
expect((0, district_1.isValidDistrict)("Savar")).toBe(false);
expect((0, district_1.isValidDistrict)("Gulshan")).toBe(false);
});
it("should handle case-insensitive input", () => {
expect((0, district_1.isValidDistrict)("dhaka")).toBe(true);
expect((0, district_1.isValidDistrict)("CHATTOGRAM")).toBe(true);
expect((0, district_1.isValidDistrict)("SyLhEt")).toBe(true);
});
it("should return false for null/undefined input", () => {
expect((0, district_1.isValidDistrict)(null)).toBe(false);
expect((0, district_1.isValidDistrict)(undefined)).toBe(false);
expect((0, district_1.isValidDistrict)("")).toBe(false);
});
it("should handle whitespace in input", () => {
expect((0, district_1.isValidDistrict)(" Dhaka ")).toBe(true);
expect((0, district_1.isValidDistrict)(" Chattogram ")).toBe(true);
});
it("should return false for non-districts", () => {
expect((0, district_1.isValidDistrict)("Dhaka")).toBe(true);
expect((0, district_1.isValidDistrict)("InvalidDistrict")).toBe(false);
});
});
describe("getDivisionOfDistrict", () => {
it("should return correct division for districts", () => {
expect((0, district_1.getDivisionOfDistrict)("Dhaka")).toBe("Dhaka");
expect((0, district_1.getDivisionOfDistrict)("Gazipur")).toBe("Dhaka");
expect((0, district_1.getDivisionOfDistrict)("Tangail")).toBe("Dhaka");
expect((0, district_1.getDivisionOfDistrict)("Chattogram")).toBe("Chattogram");
expect((0, district_1.getDivisionOfDistrict)("Cox's Bazar")).toBe("Chattogram");
expect((0, district_1.getDivisionOfDistrict)("Sylhet")).toBe("Sylhet");
expect((0, district_1.getDivisionOfDistrict)("Rajshahi")).toBe("Rajshahi");
expect((0, district_1.getDivisionOfDistrict)("Khulna")).toBe("Khulna");
expect((0, district_1.getDivisionOfDistrict)("Barisal")).toBe("Barisal");
expect((0, district_1.getDivisionOfDistrict)("Rangpur")).toBe("Rangpur");
expect((0, district_1.getDivisionOfDistrict)("Mymensingh")).toBe("Mymensingh");
});
it("should return undefined for invalid districts", () => {
expect((0, district_1.getDivisionOfDistrict)("InvalidDistrict")).toBeUndefined();
expect((0, district_1.getDivisionOfDistrict)("Savar")).toBeUndefined();
expect((0, district_1.getDivisionOfDistrict)("Gulshan")).toBeUndefined();
});
it("should handle case-insensitive input", () => {
expect((0, district_1.getDivisionOfDistrict)("dhaka")).toBe("Dhaka");
expect((0, district_1.getDivisionOfDistrict)("CHATTOGRAM")).toBe("Chattogram");
expect((0, district_1.getDivisionOfDistrict)("SyLhEt")).toBe("Sylhet");
});
it("should return undefined for null/undefined input", () => {
expect((0, district_1.getDivisionOfDistrict)(null)).toBeUndefined();
expect((0, district_1.getDivisionOfDistrict)(undefined)).toBeUndefined();
expect((0, district_1.getDivisionOfDistrict)("")).toBeUndefined();
});
it("should handle whitespace in input", () => {
expect((0, district_1.getDivisionOfDistrict)(" Dhaka ")).toBe("Dhaka");
expect((0, district_1.getDivisionOfDistrict)(" Chattogram ")).toBe("Chattogram");
});
it("should return correct division for all 64 districts", () => {
const districts = (0, district_1.allDistricts)();
districts.forEach((district) => {
const division = (0, district_1.getDivisionOfDistrict)(district);
expect(division).toBeDefined();
expect(["Dhaka", "Chattogram", "Rajshahi", "Khulna", "Barisal", "Sylhet", "Rangpur", "Mymensingh"]).toContain(division);
});
});
});
});