Software / code / prosody
Comparison
spec/core_moduleapi_spec.lua @ 8236:4878e4159e12
Port tests to the `busted` test runner
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Fri, 15 Sep 2017 17:07:57 -0400 |
| child | 8562:a6188f5d5bb5 |
comparison
equal
deleted
inserted
replaced
| 8235:7d9a2c200736 | 8236:4878e4159e12 |
|---|---|
| 1 | |
| 2 package.loaded["core.configmanager"] = {}; | |
| 3 package.loaded["core.statsmanager"] = {}; | |
| 4 package.loaded["net.server"] = {}; | |
| 5 | |
| 6 local set = require "util.set"; | |
| 7 | |
| 8 _G.prosody = { hosts = {}, core_post_stanza = true }; | |
| 9 | |
| 10 local api = require "core.moduleapi"; | |
| 11 | |
| 12 local module = setmetatable({}, {__index = api}); | |
| 13 local opt = nil; | |
| 14 function module:log() end | |
| 15 function module:get_option(name) | |
| 16 if name == "opt" then | |
| 17 return opt; | |
| 18 else | |
| 19 return nil; | |
| 20 end | |
| 21 end | |
| 22 | |
| 23 function test_option_value(value, returns) | |
| 24 opt = value; | |
| 25 assert(module:get_option_number("opt") == returns.number, "number doesn't match"); | |
| 26 assert(module:get_option_string("opt") == returns.string, "string doesn't match"); | |
| 27 assert(module:get_option_boolean("opt") == returns.boolean, "boolean doesn't match"); | |
| 28 | |
| 29 if type(returns.array) == "table" then | |
| 30 local target_array, returned_array = returns.array, module:get_option_array("opt"); | |
| 31 assert(#target_array == #returned_array, "array length doesn't match"); | |
| 32 for i=1,#target_array do | |
| 33 assert(target_array[i] == returned_array[i], "array item doesn't match"); | |
| 34 end | |
| 35 else | |
| 36 assert(module:get_option_array("opt") == returns.array, "array is returned (not nil)"); | |
| 37 end | |
| 38 | |
| 39 if type(returns.set) == "table" then | |
| 40 local target_items, returned_items = set.new(returns.set), module:get_option_set("opt"); | |
| 41 assert(target_items == returned_items, "set doesn't match"); | |
| 42 else | |
| 43 assert(module:get_option_set("opt") == returns.set, "set is returned (not nil)"); | |
| 44 end | |
| 45 end | |
| 46 | |
| 47 describe("core.moduleapi", function() | |
| 48 describe("#get_option_*()", function() | |
| 49 it("should handle missing options", function() | |
| 50 test_option_value(nil, {}); | |
| 51 end); | |
| 52 | |
| 53 it("should return correctly handle boolean options", function() | |
| 54 test_option_value(true, { boolean = true, string = "true", array = {true}, set = {true} }); | |
| 55 test_option_value(false, { boolean = false, string = "false", array = {false}, set = {false} }); | |
| 56 test_option_value("true", { boolean = true, string = "true", array = {"true"}, set = {"true"} }); | |
| 57 test_option_value("false", { boolean = false, string = "false", array = {"false"}, set = {"false"} }); | |
| 58 test_option_value(1, { boolean = true, string = "1", array = {1}, set = {1}, number = 1 }); | |
| 59 test_option_value(0, { boolean = false, string = "0", array = {0}, set = {0}, number = 0 }); | |
| 60 end); | |
| 61 | |
| 62 it("should return handle strings", function() | |
| 63 test_option_value("hello world", { string = "hello world", array = {"hello world"}, set = {"hello world"} }); | |
| 64 end); | |
| 65 | |
| 66 it("should return handle numbers", function() | |
| 67 test_option_value(1234, { string = "1234", number = 1234, array = {1234}, set = {1234} }); | |
| 68 end); | |
| 69 | |
| 70 it("should return handle arrays", function() | |
| 71 test_option_value({1, 2, 3}, { boolean = true, string = "1", number = 1, array = {1, 2, 3}, set = {1, 2, 3} }); | |
| 72 test_option_value({1, 2, 3, 3, 4}, {boolean = true, string = "1", number = 1, array = {1, 2, 3, 3, 4}, set = {1, 2, 3, 4} }); | |
| 73 test_option_value({0, 1, 2, 3}, { boolean = false, string = "0", number = 0, array = {0, 1, 2, 3}, set = {0, 1, 2, 3} }); | |
| 74 end); | |
| 75 end) | |
| 76 end) |