Guest User

Untitled

a guest
Apr 24th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. require 'test_helper'
  2.  
  3. class Project
  4. include MongoMapper::Document
  5. key :name, String
  6. key :context_id, String
  7. many :tasks
  8. many :collaborators
  9. end
  10.  
  11. class Task
  12. include MongoMapper::EmbeddedDocument
  13. key :name, String
  14. end
  15.  
  16. class Collaborator
  17.  
  18. include MongoMapper::EmbeddedDocument
  19.  
  20. belongs_to :user
  21. belongs_to :project
  22.  
  23. key :user_id, String
  24. key :project_id, String
  25.  
  26. end
  27.  
  28. class User
  29. include MongoMapper::Document
  30. key :username, String
  31. many :projects, :as => :collaborator
  32. end
  33.  
  34. class ProjectTest < Test::Unit::TestCase
  35. context "A project instance" do
  36. setup do
  37. MongoMapper.connection.drop_database("mongo_sandbox")
  38. @project = Project.create(:name=>"Foo")
  39. @task = Task.new(:name=>"Foo")
  40.  
  41. @project.tasks << @task
  42. @project.save
  43.  
  44. @user = User.create(:username=>"FooUser")
  45.  
  46. @project.collaborators << Collaborator.new(:user=>@user,:project=>@project)
  47. @project.save
  48. end
  49.  
  50. should "should find the collaborator" do
  51. assert_equal(@project.tasks.first, @task)
  52. end
  53.  
  54. should "find a project by task name" do
  55. project = Project.find(:first,:conditions=>{
  56. "tasks.name"=>"Foo"
  57. })
  58.  
  59. assert_equal(@project, project)
  60. end
  61.  
  62. should "find a project by array of names" do
  63. project = Project.find(:first,:conditions=>{
  64. "tasks.name"=> {"$in"=>["Foo","Bar"]}
  65. })
  66.  
  67. assert_equal(@project, project)
  68. end
  69.  
  70. should "find a project by size of tasks" do
  71. project = Project.find(:first,:conditions=>{
  72. "tasks"=> {"$size"=> 1}
  73. })
  74.  
  75. assert_equal(@project, project)
  76. end
  77.  
  78. should "find by collaborator" do
  79. project = Project.find(:first,:conditions=>{
  80. "collaborators.user_id"=>@user._id
  81. })
  82. assert_equal(@project, project)
  83. end
  84.  
  85.  
  86. end
  87. end
Add Comment
Please, Sign In to add comment