• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / tigerdata-app / c8087384-f2c2-4f04-9aaf-0decf488c88a

15 Dec 2023 05:09PM UTC coverage: 70.634% (+0.02%) from 70.619%
c8087384-f2c2-4f04-9aaf-0decf488c88a

push

circleci

web-flow
Adding a datalist for user roles input with javascript to only allow valid values (#317)

* Making sure the Data Users are real system users

* Adding a datalist for user roles and javascript feedback
fixes #285

4 of 4 new or added lines in 2 files covered. (100.0%)

1 existing line in 1 file now uncovered.

813 of 1151 relevant lines covered (70.63%)

6.35 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.49
/app/controllers/projects_controller.rb
1
# frozen_string_literal: true
2
class ProjectsController < ApplicationController
1✔
3
  def new
1✔
4
    @project = Project.new
5✔
5
  end
6

7
  def create
1✔
8
    @project = Project.new
3✔
9
    @project.metadata = form_metadata
3✔
10
    if @project.save
3✔
11
      TigerdataMailer.with(project: @project).project_creation.deliver_later
3✔
12
      redirect_to project_confirmation_path(@project)
3✔
13
    else
UNCOV
14
      render :new
×
15
    end
16
  end
17

18
  def show
1✔
19
    @project = Project.find(params[:id])
7✔
20
  end
21

22
  def approve
1✔
23
    @project = Project.find(params[:id])
2✔
24
    xml_namespace = params[:xml_namespace]
2✔
25
    @project.approve!(session_id: current_user.mediaflux_session, xml_namespace: xml_namespace)
2✔
26
    redirect_to @project
2✔
27
  end
28

29
  def edit
1✔
30
    @project = Project.find(params[:id])
2✔
31
  end
32

33
  def update
1✔
34
    @project = Project.find(params[:id])
1✔
35
    @project.metadata = form_metadata(project: @project)
1✔
36
    if @project.save
1✔
37
      if @project.in_mediaflux?
1✔
38
        # Ideally this should happen inside the model, but since the code requires the Mediaflux session
39
        # we'll keep it here for now.
40
        @project.update_mediaflux(session_id: current_user.mediaflux_session)
1✔
41
      end
42

43
      redirect_to @project
1✔
44
    else
45
      render :edit
×
46
    end
47
  end
48

49
  def index
1✔
50
    @projects = Project.all
1✔
51
  end
52

53
  def confirmation; end
1✔
54

55
  private
1✔
56

57
    def read_only_counter
1✔
58
      params[:ro_user_counter].to_i
4✔
59
    end
60

61
    def read_write_counter
1✔
62
      params[:rw_user_counter].to_i
4✔
63
    end
64

65
    def user_list_params(counter, key_prefix)
1✔
66
      users = []
8✔
67
      (1..counter).each do |i|
8✔
68
        key = "#{key_prefix}#{i}"
6✔
69
        users << params[key]
6✔
70
      end
71
      users.compact.uniq
8✔
72
    end
73

74
    def project_timestamps(project:)
1✔
75
      timestamps = {}
4✔
76
      if project.nil?
4✔
77
        timestamps[:created_by] = current_user.uid
3✔
78
        timestamps[:created_on] = DateTime.now.strftime("%d-%b-%Y %H:%M:%S")
3✔
79

80
      else
81
        timestamps[:created_by] = project.metadata[:created_by]
1✔
82
        timestamps[:created_on] = project.metadata[:created_on]
1✔
83
        timestamps[:updated_by] = current_user.uid
1✔
84
        timestamps[:updated_on] = DateTime.now.strftime("%d-%b-%Y %H:%M:%S")
1✔
85
      end
86
      timestamps
4✔
87
    end
88

89
    def form_metadata(project: nil)
1✔
90
      ro_users = user_list_params(read_only_counter, "ro_user_")
4✔
91
      rw_users = user_list_params(read_write_counter, "rw_user_")
4✔
92
      data = {
93
        data_sponsor: params[:data_sponsor],
4✔
94
        data_manager: params[:data_manager],
95
        departments: params[:departments],
96
        directory: params[:directory],
97
        title: params[:title],
98
        description: params[:description],
99
        data_user_read_only: ro_users,
100
        data_user_read_write: rw_users
101
      }
102
      timestamps = project_timestamps(project: project)
4✔
103
      data.merge(timestamps)
4✔
104
    end
105
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc