add gs
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
return function()
|
||||
local CoreGui = game:GetService("CoreGui")
|
||||
|
||||
local Modules = CoreGui.RobloxGui.Modules
|
||||
|
||||
local AppState = require(Modules.LuaChat.AppState)
|
||||
local BaseScreen = require(Modules.LuaChat.Views.Phone.BaseScreen)
|
||||
local ScreenManager = require(Modules.LuaChat.ScreenManager)
|
||||
|
||||
local FormFactor = require(Modules.LuaApp.Enum.FormFactor)
|
||||
local AppReducer = require(Modules.LuaApp.AppReducer)
|
||||
|
||||
local Rodux = require(Modules.Common.Rodux)
|
||||
|
||||
local roduxStore = Rodux.Store.new(AppReducer, {
|
||||
FormFactor = FormFactor.PHONE,
|
||||
})
|
||||
local appState = AppState.mock(nil, roduxStore)
|
||||
|
||||
--[[
|
||||
Make an approximation of a view using BaseScreen
|
||||
]]
|
||||
local function makeView(intentValue)
|
||||
local view = {
|
||||
route = {
|
||||
intent = intentValue,
|
||||
},
|
||||
startCount = 0,
|
||||
stopCount = 0,
|
||||
resumeCount = 0,
|
||||
pauseCount = 0,
|
||||
rbx = Instance.new("Frame")
|
||||
}
|
||||
|
||||
setmetatable(view, {
|
||||
__index = BaseScreen:Template()
|
||||
})
|
||||
|
||||
function view:Start(...)
|
||||
BaseScreen.Start(self, ...)
|
||||
self.startCount = self.startCount + 1
|
||||
end
|
||||
|
||||
function view:Stop(...)
|
||||
BaseScreen.Stop(self, ...)
|
||||
self.stopCount = self.stopCount + 1
|
||||
end
|
||||
|
||||
function view:Resume(...)
|
||||
BaseScreen.Resume(self, ...)
|
||||
self.resumeCount = self.resumeCount + 1
|
||||
end
|
||||
|
||||
function view:Pause(...)
|
||||
BaseScreen.Pause(self, ...)
|
||||
self.pauseCount = self.pauseCount + 1
|
||||
end
|
||||
|
||||
function view:Destruct(...)
|
||||
BaseScreen.Destruct(self, ...)
|
||||
end
|
||||
|
||||
return view
|
||||
end
|
||||
|
||||
it("should have no current view by default", function()
|
||||
local screenManager = ScreenManager.new(nil, appState)
|
||||
|
||||
expect(screenManager).to.be.ok()
|
||||
end)
|
||||
|
||||
it("should push views onto an empty stack", function()
|
||||
local screenManager = ScreenManager.new(nil, appState)
|
||||
local view = makeView("view")
|
||||
|
||||
screenManager:PushView(view)
|
||||
|
||||
expect(view.startCount).to.equal(1)
|
||||
|
||||
expect(screenManager:GetCurrentView()).to.equal(view)
|
||||
end)
|
||||
|
||||
it("should push and pop views onto eachother", function()
|
||||
local screenManager = ScreenManager.new(nil, appState)
|
||||
local viewA = makeView("viewA")
|
||||
local viewB = makeView("viewB")
|
||||
|
||||
screenManager:PushView(viewA)
|
||||
screenManager:PushView(viewB)
|
||||
|
||||
expect(screenManager:GetCurrentView()).to.equal(viewB)
|
||||
|
||||
expect(viewA.startCount).to.equal(1)
|
||||
expect(viewA.pauseCount).to.equal(1)
|
||||
|
||||
expect(viewB.startCount).to.equal(1)
|
||||
|
||||
local popped = screenManager:PopView()
|
||||
|
||||
expect(popped).to.equal(viewB)
|
||||
expect(screenManager:GetCurrentView()).to.equal(viewA)
|
||||
|
||||
expect(viewA.resumeCount).to.equal(1)
|
||||
expect(viewB.stopCount).to.equal(1)
|
||||
end)
|
||||
|
||||
it("should prevent pushing a view on top of itself", function()
|
||||
local screenManager = ScreenManager.new(nil, appState)
|
||||
local viewA = makeView("viewA")
|
||||
|
||||
expect(screenManager).to.be.ok()
|
||||
|
||||
expect(function()
|
||||
screenManager:PushView(viewA)
|
||||
screenManager:PushView(viewA)
|
||||
end).to.throw()
|
||||
end)
|
||||
|
||||
it("should have a valid Analytics object", function()
|
||||
local screenManager = ScreenManager.new(nil, appState)
|
||||
expect(screenManager._analytics).to.be.ok()
|
||||
end)
|
||||
end
|
||||
Reference in New Issue
Block a user