context_test.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package worker
  2. import (
  3. "testing"
  4. . "github.com/smartystreets/goconvey/convey"
  5. )
  6. func TestContext(t *testing.T) {
  7. Convey("Context should work", t, func() {
  8. ctx := NewContext()
  9. So(ctx, ShouldNotBeNil)
  10. So(ctx.parent, ShouldBeNil)
  11. ctx.Set("logdir1", "logdir_value_1")
  12. ctx.Set("logdir2", "logdir_value_2")
  13. logdir, ok := ctx.Get("logdir1")
  14. So(ok, ShouldBeTrue)
  15. So(logdir, ShouldEqual, "logdir_value_1")
  16. Convey("When entering a new context", func() {
  17. ctx = ctx.Enter()
  18. logdir, ok = ctx.Get("logdir1")
  19. So(ok, ShouldBeTrue)
  20. So(logdir, ShouldEqual, "logdir_value_1")
  21. ctx.Set("logdir1", "new_value_1")
  22. logdir, ok = ctx.Get("logdir1")
  23. So(ok, ShouldBeTrue)
  24. So(logdir, ShouldEqual, "new_value_1")
  25. logdir, ok = ctx.Get("logdir2")
  26. So(ok, ShouldBeTrue)
  27. So(logdir, ShouldEqual, "logdir_value_2")
  28. Convey("When accesing invalid key", func() {
  29. logdir, ok = ctx.Get("invalid_key")
  30. So(ok, ShouldBeFalse)
  31. So(logdir, ShouldBeNil)
  32. })
  33. Convey("When exiting the new context", func() {
  34. ctx, err := ctx.Exit()
  35. So(err, ShouldBeNil)
  36. logdir, ok = ctx.Get("logdir1")
  37. So(ok, ShouldBeTrue)
  38. So(logdir, ShouldEqual, "logdir_value_1")
  39. logdir, ok = ctx.Get("logdir2")
  40. So(ok, ShouldBeTrue)
  41. So(logdir, ShouldEqual, "logdir_value_2")
  42. Convey("When exiting from top bottom context", func() {
  43. ctx, err := ctx.Exit()
  44. So(err, ShouldNotBeNil)
  45. So(ctx, ShouldBeNil)
  46. })
  47. })
  48. })
  49. })
  50. }