define(["js/models/license"], function(LicenseModel) { describe("License model constructor", function() { it("accepts no arguments", function() { var model = new LicenseModel() expect(model.get("type")).toBeNull(); expect(model.get("options")).toEqual({}); expect(model.get("custom")).toBeFalsy(); }); it("accepts normal arguments", function() { var model = new LicenseModel({ "type": "creative-commons", "options": {"fake-boolean": true, "version": "your momma"} }); expect(model.get("type")).toEqual("creative-commons"); expect(model.get("options")).toEqual({"fake-boolean": true, "version": "your momma"}); }) it("accepts a license string argument", function() { var model = new LicenseModel({"asString": "all-rights-reserved"}); expect(model.get("type")).toEqual("all-rights-reserved"); expect(model.get("options")).toEqual({}); expect(model.get("custom")).toBeFalsy(); }); it("accepts a custom license argument", function() { var model = new LicenseModel({"asString": "Mozilla Public License 2.0"}) expect(model.get("type")).toBeNull(); expect(model.get("options")).toEqual({}); expect(model.get("custom")).toEqual("Mozilla Public License 2.0"); }); }); describe("License model", function() { beforeEach(function() { this.model = new LicenseModel(); }); it("can parse license strings", function() { this.model.setFromString("creative-commons: BY") expect(this.model.get("type")).toEqual("creative-commons") expect(this.model.get("options")).toEqual({"BY": true}) expect(this.model.get("custom")).toBeFalsy(); }); it("can stringify a null license", function() { expect(this.model.toString()).toEqual(""); }); it("can stringify a simple license", function() { this.model.set("type", "foobie thinger"); expect(this.model.toString()).toEqual("foobie thinger"); }); it("can stringify a license with options", function() { this.model.set({ "type": "abc", "options": {"ping": "pong", "bing": true, "buzz": true, "beep": false}} ); expect(this.model.toString()).toEqual("abc: ping=pong bing buzz"); }); it("can stringify a custom license", function() { this.model.set({ "type": "doesn't matter", "options": {"ignore": "me"}, "custom": "this is my super cool license" }); expect(this.model.toString()).toEqual("this is my super cool license"); }); }) })